<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>FileSetTime</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link href="../css/default.css" rel="stylesheet" type="text/css">
</head>
<body>

<h1>FileSetTime</h1>

<p>改变一个或多个文件或文件夹的时间戳. 支持通配符.</p>

<pre class="Syntax">FileSetTime [, YYYYMMDDHH24MISS, FilePattern, WhichTime, OperateOnFolders?, Recurse?]</pre>
<h3>参数</h3>
<table class="info">
  <tr>
    <td width="15%">YYYYMMDDHH24MISS</td>
    <td width="85%"><p>如果为空或省略, 默认使用当前时间. 否则, 指定操作使用的时间 (参见备注了解时间的格式). 不支持 1601 以前的年份.</p>
    <p>此参数可以为 <a href="../Variables.htm#Expressions">表达式</a>. 因此, 如果需要组合多个变量来形成单个时间戳, 应该使用 <a href="../Variables.htm#concat">点运算符</a> 代替百分号. 例如: <em>FileSetTime, Year <strong>.</strong> Month <strong>.</strong> Day, C:\My File.txt</em></p></td>
  </tr>
  <tr>
    <td width="15%">FilePattern</td>
    <td width="85%"><p>单个文件或文件夹的名称, 或通配符例如 C:\Temp\*.tmp. 如果未指定绝对路径则假定 <em>FilePattern</em> 在 <a href="../Variables.htm#WorkingDir">%A_WorkingDir%</a> 中.</p>
    <p>如果省略, 则使用最内层 <a href="LoopFile.htm">文件循环</a> 的当前文件代替.</p></td>
  </tr>
  <tr>
    <td>WhichTime</td>
    <td>需设置的时间戳:<br>
      M = 修改时间 (如果此参数为空或省略, 这是默认值)<br>
      C = 创建时间<br>
      A = 访问时间 </td>
  </tr>
  <tr>
    <td>OperateOnFolders?</td>
    <td><p>0 (默认值) 不对文件夹进行操作 (仅文件). <br>
1 对匹配通配符的所有文件和文件夹进行操作.<br>
2 仅对文件夹进行操作 (不操作文件). </p>
      <p>注意: 如果 FilePattern 是单个文件夹而不是一个通配符, 那么此设置总是被忽略.</p>
      <p>此参数可以为 <a href="../Variables.htm#Expressions">表达式</a>.</p></td>
  </tr>
  <tr>
    <td>Recurse?</td>
    <td><p>0 (默认值) 不遍历子文件夹.<br>
  1 遍历所有子文件夹以便对包含在其中的匹配 <em>FilePattern</em> 的所有文件和文件夹都进行操作. 将遍历所有子文件夹, 而不仅仅名称与 <em>FilePattern</em> 匹配的那些. 然而, 完整路径名称超过 259 个字符的文件和文件夹会被跳过, 就像不存在一样. 这样的文件极少, 因为一般操作系统不会允许创建它们.</p>
      <p>此参数可以为 <a href="../Variables.htm#Expressions">表达式</a>.</p></td>
  </tr>
</table>

<h3>返回值</h3>
<p><a href="../misc/ErrorLevel.htm">ErrorLevel</a> 被设置为改变时间戳 <u>失败</u> 的文件数目, 否则为 0. 如果指定的时间戳无效或 <em>FilePattern</em> 解析为空值, ErrorLevel 被设置为 1.</p>
<p>如果找到了文件, <a href="../Variables.htm#LastError">A_LastError</a> 被设置为 0 (零) 或在最后一次设置时间戳失败时操作系统 GetLastError() 函数返回的结果. 否则 A_LastError 包含一个表明没有找到文件的原因的错误码.</p>

<h3>备注</h3>
<p>在 Windows 95/98/ME 系统中, 不支持改变文件夹的时间戳. 这样的尝试被忽略.</p>
<p>文件在 FAT16 &amp; FAT32 分区上的最近一次访问时间可能不如在 NTFS 分区上那么精确.</p>
<p><a name="YYYYMMDD"></a>YYYYMMDDHH24MISS 格式中元素表示的含义分别为:</p>
<table class="info">
  <tr>
    <td width="46">YYYY</td>
    <td width="538">4 位数的年份</td>
  </tr>
  <tr>
    <td>MM</td>
    <td>2 位数的月份 (01-12) </td>
  </tr>
  <tr>
    <td>DD</td>
    <td>月的 2 位数的天数 (01-31)</td>
  </tr>
  <tr>
    <td>HH24</td>
    <td>24 小时格式的 2 位小时数 (00-23). 例如, 09 是 9am 而 21 是 9pm.</td>
  </tr>
  <tr>
    <td>MI</td>
    <td>2 位的分钟数 (00-59)</td>
  </tr>
  <tr>
    <td>SS</td>
    <td>2 位的秒数 (00-59)</td>
  </tr>
</table>
<p>如果只给出了 YYYYMMDDHH24MISS 中的部分字符串 (例如 200403), 任何省略的元素值将以后面的默认值填充:</p>
<p>MM: Month 01<br>
  DD: Day 01<br>
  HH24: Hour 00<br>
  MI: Minute 00<br>
SS: Second 00</p>
<p>内置变量 <a href="../Variables.htm#Now">A_Now</a> 包含了上述格式的当前本地区域时间. 同样地, <a href="../Variables.htm#NowUTC">A_NowUTC</a> 包含了当前协调的通用时间.</p>
<p><strong>注意:</strong> 通过 <a href="EnvAdd.htm">EnvAdd</a> 和 <a href="EnvSub.htm">EnvSub</a>, 日期时间值可以进行比较和加减. 同样, 最好不要使用大于或小于来比较时间除非它们的字符串长度相同. 这是因为它们被作为数字进行比较; 例如, 20040201 数值上总是小于 (但时间顺序上较后) 200401010533. 所以应该使用 <a href="EnvSub.htm">EnvSub</a> 来计算出它们之间的时间差是正还是负.</p>
<h3>相关</h3>
<p><a href="FileGetTime.htm">FileGetTime</a>, <a href="FileGetAttrib.htm">FileGetAttrib</a>, <a href="FileSetAttrib.htm">FileSetAttrib</a>, <a href="FileGetSize.htm">FileGetSize</a>, <a href="FileGetVersion.htm">FileGetVersion</a>, <a href="FormatTime.htm">FormatTime</a>, <a href="LoopFile.htm">文件循环</a>, <a href="EnvAdd.htm">EnvAdd</a>, <a href="EnvSub.htm">EnvSub</a></p>
<h3>示例</h3>
<pre class="NoIndent"><em>; Set the modification time to the current time for all matching files:</em>
FileSetTime, , C:\temp\*.txt

<em>; Set the modification date (time will be midnight):</em>
FileSetTime, 20040122, C:\My Documents\test.doc

<em>; Set the creation date. The time will be set to 4:55pm:</em>
FileSetTime, 200401221655, C:\My Documents\test.doc, C

<em>; Change the mod-date of all files that match a pattern. ; Any matching folders will also be changed due to the last parameter:</em>
FileSetTime, 20040122165500, C:\Temp\*.*, M, 1</pre>

</body>
</html>
